package aceim.app.service; import aceim.api.dataentity.Buddy; import aceim.api.dataentity.BuddyGroup; import aceim.api.utils.Logger; import aceim.api.utils.Logger.LoggerLevel; import aceim.app.R; import aceim.app.dataentity.Account; import aceim.app.dataentity.AccountService; import android.annotation.SuppressLint; import android.content.Context; import android.os.Build; import android.os.RemoteException; public final class ServiceUtils { private ServiceUtils(){} public static AccountService makeAccount(Account account, ProtocolServicesManager protocolsManager) { Logger.log("Make account service for " + account.getAccountId(), LoggerLevel.VERBOSE); ProtocolService s = protocolsManager.getProtocolServiceByName(account.getProtocolServicePackageName()); if (s != null) { try { s.getProtocol().addAccount(account.getServiceId(), account.getProtocolUid()); } catch (RemoteException e) { Logger.log(e); } catch (Exception e) { Logger.log(e); } } else { Logger.log("No protocol service found for " + account.getAccountId() + " with name " + account.getProtocolServicePackageName() , LoggerLevel.INFO); } return new AccountService(account, s); } @SuppressLint("InlinedApi") public static final int getAccessMode(){ int mode = Context.MODE_PRIVATE; if (Build.VERSION.SDK_INT > 10){ mode = Context.MODE_MULTI_PROCESS; } return mode; } public static final int getRequestCodeForActivity(int code) { if (code < 0) { code = -code; } return code < Short.MAX_VALUE ? code : code >> 16; } public static Buddy cloneBuddy(Buddy origin){ Buddy clone = new Buddy(origin.getProtocolUid(), origin.getOwnerUid(), origin.getServiceName(), origin.getServiceId()); clone.merge(origin); return clone; } public static BuddyGroup cloneBuddyGroup(BuddyGroup origin){ BuddyGroup clone = new BuddyGroup(origin.getId(), origin.getOwnerUid(), origin.getServiceId()); clone.setCollapsed(origin.isCollapsed()); clone.getBuddyList().addAll(origin.getBuddyList()); return clone; } @SuppressWarnings("deprecation") @SuppressLint("NewApi") public static void toClipboard(Context context, String text, String title) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { android.text.ClipboardManager clipMan = (android.text.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); clipMan.setText(text); } else { android.content.ClipboardManager clipMan = (android.content.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); android.content.ClipData clip = android.content.ClipData.newPlainText(title!=null ? title : context.getString(R.string.app_name), text); clipMan.setPrimaryClip(clip); } } }